iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
AI & Data

看圖說故事,讓 Neo4j 重新詮釋你的資料庫系列 第 4

Neo4j 資料庫查詢語言 Cypher 第一部

  • 分享至 

  • xImage
  •  

Neo4j 看圖說故事 - 諾蘭執導的電影

最近有一部很火紅的電影 - 天能,身邊朋友們都說好看,還有人想三刷,今天我也去看了,沒想到已經上映二十多天了,竟然還是爆滿,只剩前排和最後一排的角落!
如果你也喜歡諾蘭的電影,就收下這張圖吧~

諾蘭的電影(Neo4j)

上次我們才剛聊到 Neo4j 的資料庫查詢語言 Cypher,並給大家簡短的範例做為開場,今天我們就來更近一步認識這個看似 SQL 的語言吧

如果你安裝的是新版的 Neo4j Desktop,那麼預設就會有一個 Neo4j Primer Project,裡頭包含了一個 Movie Database;如果沒有這個 資料庫,請在指令區輸入

:play movie-graph

會跳出電影資料庫的教學,翻到第二頁後點選 CREATE 指令如圖
Neo4j Movie DB Create

執行後就會產生電影資料庫囉!(請只執行一次)

Movie DB 是內建的迷你電影資料庫,儲存著許多電影、導演以及演員們的關係圖,是官方作為 Cypher 語法教學與練習的基礎。
如果你想看 Cypher 完全基礎教學,請輸入

:play cypher

這邊我不打算非常細節的從基礎說起,官方的教學已經很好懂囉~ 我直接合併或列出官方比較進階的範例,然後告訴你他在做些什麼

請找出湯姆漢克有演的電影,年份是 1990 ~ 2000,最多列出 10 筆

MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies)
WHERE tomHanksMovies.released >= 1990 AND tomHanksMovies.released < 2000
RETURN tom, tomHanksMovies
LIMIT 10

請找出電影「雲圖」的所有導演,而這些導演們還有哪些其他作品?

MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors)-[:DIRECTED]->(m)
RETURN *

請找出有哪些人曾和湯姆漢克一起演出,分別是哪些電影?

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors)
RETURN coActors

請列出所有跟電影「雲圖」有關的人有誰?分別是什麼樣的關係?

MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) RETURN people.name, Type(relatedTo), relatedTo

這個查詢將關係當做了變數做查詢,所以導演或演員們都會被找出。

接下來我們試著新增自己喜歡的電影、導演和演員們
首先我們看看克里斯多福·諾蘭有沒有存在資料庫中

MATCH (p:Person) WHERE p.name =~ '.*Nolan.*'
RETURN p

這是以規則運算式來做查詢,只要名字包含了 "Nolan",就會被找到,就像是 SQL 的 LIKE 語法;做 LIKE 查詢還有一個方法如下:

MATCH (p:Person) WHERE p.name CONTAINS 'Nolan'
RETURN p

查詢結果是,這位大導演還未被加入這個電影資料庫,那我們自己來建立吧!這邊我想改用中文,畢竟在台灣,大部分還是會以中譯來稱呼。

CREATE (nolan:Person {name: '諾蘭'}),
(m1:Movie {title: '星際效應', released: 2014}),
(m2:Movie {title: '全面啟動', released: 2010}),
(m3:Movie {title: 'TENET天能', released: 2020}),
(nolan)-[:DIRECTED]->(m1),
(nolan)-[:DIRECTED]->(m2),
(nolan)-[:DIRECTED]->(m3)

讀者們可以試著自己建立諾蘭的所有電影和演員們,就會得到很豐富的關係圖囉!
接下來幾天,會繼續跟大家分享各種 Cypher 查詢語法,讓你可以很快地建立自己喜歡的圖資~


上一篇
Neo4j Browser 資料庫管理與查詢工具
下一篇
Neo4j 資料庫查詢語言 Cypher 第二部
系列文
看圖說故事,讓 Neo4j 重新詮釋你的資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言